From abbeb89b7ca7e369ec47c548107843ed85ba34d4 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 16 Apr 2010 01:44:50 +0200 Subject: [PATCH] GtkCssProvider: Allow empty selector. universal selector is implied, so things like this work: :active {} :insensitive{} --- gtk/gtkcssprovider.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index ffb23b84f1..71d58c71af 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -177,6 +177,12 @@ selector_path_prepend_glob (SelectorPath *path) path->elements = g_slist_prepend (path->elements, elem); } +static gint +selector_path_depth (SelectorPath *path) +{ + return g_slist_length (path->elements); +} + static SelectorStyleInfo * selector_style_info_new (SelectorPath *path) { @@ -589,7 +595,8 @@ parse_selector (GtkCssProvider *css_provider, *selector_out = NULL; - if (scanner->token != G_TOKEN_IDENTIFIER) + if (scanner->token != ':' && + scanner->token != G_TOKEN_IDENTIFIER) return G_TOKEN_IDENTIFIER; path = selector_path_new (); @@ -611,6 +618,10 @@ parse_selector (GtkCssProvider *css_provider, if (scanner->token == ':') { + /* Add glob selector if path is empty */ + if (selector_path_depth (path) == 0) + selector_path_prepend_glob (path); + /* Pseudo-class scanning */ css_provider_push_scope (css_provider, SCOPE_PSEUDO_CLASS); g_scanner_get_next_token (scanner); -- 2.30.2